package com.atguigu.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;

/**
 * 1、如何使用Naccos作为配置中心管理配置
 *   1）引入依赖
     *   <dependency>
     *      <groupId>com.alibaba.cloud</groupId>
     *      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     *  </dependency>
 *    2）创建一个bootstrap。properties
 *      spring.application.name=gulimall-coupon
 *      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *    3) 需要给配置中心默认添加一个数据集（DataID）gulimall-coupon.properties  默认规则为应用名。properties
 *    4) 给配置中心文件添加任何配置  ---注意，不能带任何的中文注释，否则配置中心不生效
 *    5）获取动态配置   @RefreshScope:动态获取配置  @Value（“${配置项的名}”）
 *       配置中心和应用中都配置了，优先使用配置中心的配置
 *  2、细节
 *    1）命名空间：配置隔离
 *      默认：public(保留空间)  默认新增的所有配置在public空间
 *      1、开发，测试，生产利用命名空间来做环境隔离
 *       注意：在bootstrap.properties配置上，要使用哪个命名空间的配置
 *           spring.cloud.nacos.config.namespace=5c3ad5af-d16b-4d7d-b663-cadcc5d06226
 *       2、每一个微服务之间的配置相互隔离，每一个微服务创建自己的命名空间，只是加载自己命名空间下的所有配置
 *    2）配置集：所有配置的集合
 *    3）配置集ID：类似文件名
 *       Data ID:类型文件名
 *    4）配置分组
 *      默认所有的配置集都属于  DEFAULT_GROUP
 *
 *      每一个微服务创建自己的命名空间，使用配置分组区分环境  dev test prod
 *
 *  3、同时加载多个配置集
 *    1)、微服务任何配置文件信息，都可以放在配置中心中
 *    2）、只需要在bootstrap。properties说明加载配置中心中哪些配置文件即可
 *    3）、@Value  @ConfigurationProperties
 *      以前springboot任何方法从配置文件中获取值，都能使用
 *      配置中心中有的优先使用配置中心的
 */

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
